package com.wcl.nullmusic.utils;

import android.content.ContentResolver;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;

import com.wcl.nullmusic.R;
import com.wcl.nullmusic.base.BaseAppcation;
import com.wcl.nullmusic.Mp3Info;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by dllo on 16/1/6.
 */
public class LocalMp3InfoUtils {
    private static LocalMp3InfoUtils utils;
    private static ContentResolver resolver;

    private LocalMp3InfoUtils() {
    }

    public static LocalMp3InfoUtils getInstance() {
        if (utils == null) {
            utils = new LocalMp3InfoUtils();
        }
        return utils;
    }

    public static List<Mp3Info> getMp3Info() {
        Cursor cursor = BaseAppcation.getContext().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                null, MediaStore.Audio.Media.DURATION + ">=60000", null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
        List<Mp3Info> datas = new ArrayList<>();
        if (cursor != null) {
            while (cursor.moveToNext()) {

                String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
                // 歌曲ID
                int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
                // 歌曲的名称
                String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
                // 歌曲的歌手名
                String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                // 歌曲的时长
                int duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
                // 歌曲的图片
                Bitmap bitmap = null;
                String albumArt = getAlbumArt(id);
//                if (albumArt != null) {
//                    BitmapFactory.Options options = new BitmapFactory.Options();
//                    options.inPreferredConfig = Bitmap.Config.RGB_565;
//                    bitmap = BitmapFactory.decodeFile(albumArt, options);
//                }
//                if(bitmap==null)
//                    bitmap=BitmapFactory.decodeResource(BaseAppcation.getContext().getResources(),R.mipmap.ic_live_voice_press);

                Mp3Info mp3Info = new Mp3Info(url, title, artist, duration, albumArt);
                datas.add(mp3Info);
            }
            cursor.close();
            return datas;
        }
        return null;
    }

    public static final String mUriAlbums = "content://media/external/audio/albums";

    /**
     * 通过album_id查找 album_art 如果找不到返回null
     *
     * @param album_id
     * @return
     */
    private static String getAlbumArt(int album_id) {

        String[] projection = new String[]{"album_art"};
        Cursor cur = BaseAppcation.getContext().getContentResolver().query(
                Uri.parse(mUriAlbums + "/" + Integer.toString(album_id)),
                projection, null, null, null);
        String album_art = null;
        if (cur.getCount() > 0 && cur.getColumnCount() > 0) {
            cur.moveToNext();
            album_art = cur.getString(0);
        }
        cur.close();
        cur = null;
        return album_art;
    }

    public static Bitmap getBitmap(String path) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        Bitmap bitmap = BitmapFactory.decodeFile(path, options);
            return bitmap;
    }
//    /**
//     *  获取专辑封面的位图对象
//     * @param context
//     * @param song_id
//     * @param album_id
//     * @param allowdefalut
//     * @param small
//     * @return
//     */
//    public static Bitmap getArtwork(Context context, long song_id, long album_id,
//                             boolean allowdefalut, boolean small) {
//        if (album_id < 0) {
//            if (song_id < 0) {
//                Bitmap bitmap = getArtworkFromFile(context,song_id,-1);
//                if(bitmap !=null){
//                    return bitmap;
//                }
//            }
//            if(allowdefalut){
//                return getDefaultArtwork(context,small);
//            }
//            return null;
//        }
//        ContentResolver resolver=context.getContentResolver();
//       Uri uri= ContentUris.withAppendedId(mUriAlbums, album_id);
//        if(uri !=null){
//            InputStream in =null;
//            try {
//                in=resolver.openInputStream(uri);
//                Options options=new Options();
//                // 定制原始大小
//                options.inSampleSize=1;
//                // 只进行大小判断
//                options.inJustDecodeBounds=true;
//                // 调用此方法得到options得到图片的大小
//                BitmapFactory.decodeStream(in, null, options);
//                if(small)
//                    options.inSampleSize=computeSampleSize(options,40);
//                else
//                    options.inSampleSize=computeSampleSize(options,600);
//                // 得到了缩放的比例,现在开始正式读入Bitmap数据
//                options.inJustDecodeBounds=false;
//                options.inDither=false;
//                options.inPreferredConfig=Bitmap.Config.ARGB_8888;
//                in=resolver.openInputStream(uri);
//                return BitmapFactory.decodeStream(in,null,options);
//
//            } catch (FileNotFoundException e) {
//                Bitmap bm=getArtworkFromFile(context,song_id,album_id);
//                e.printStackTrace();
//            }
//        }
//        return null;
//    }
//
//    /**
//     * 获取默认专辑图片
//     */
//    public static Bitmap getDefaultArtwork(Context context, boolean small) {
//        BitmapFactory.Options options = new BitmapFactory.Options();
//        options.inPreferredConfig = Bitmap.Config.RGB_565;
//        if (small)
//            return BitmapFactory.decodeStream(context.getResources().openRawResource(R.mipmap.ic_live_voice_press), null, options);
//        return BitmapFactory.decodeStream(context.getResources().openRawResource(R.mipmap.ic_live_voice_press), null, options);
//    }
//
//    /**
//     * 缩放
//     */
//    public static int computeSampleSize(BitmapFactory.Options options, int target) {
//        int w = options.outWidth;
//        int h = options.outHeight;
//        int candidateW = w / target;
//        int candidaerH = h / target;
//        int candidate = Math.max(candidateW, candidaerH);
//        if (candidate > 1) {
//            if (w > target && (w / candidate) < target) {
//                candidate -= 1;
//            }
//        }
//        if (candidate > 1) {
//            if (h > target && (h / candidate) < target) {
//                candidate -= 1;
//            }
//        }
//
//        return candidate;
//    }
}
